package db

import (
	"time"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"

	"gin-api-server/core_library/global"
	"gin-api-server/core_library/library/db/modelType"
	"gin-api-server/utils/common"
)

type Admin struct {
	Id           int       `gorm:"column:id;AUTO_INCREMENT;primary_key" json:"id"`             // ID
	Username     string    `gorm:"column:username" json:"username"`                            // 用户名
	Nickname     string    `gorm:"column:nickname" json:"nickname"`                            // 昵称
	Password     string    `gorm:"column:password" json:"password"`                            // 密码
	Salt         string    `gorm:"column:salt" json:"salt"`                                    // 密码盐
	Avatar       string    `gorm:"column:avatar" json:"avatar"`                                // 头像
	Email        string    `gorm:"column:email" json:"email"`                                  // 电子邮箱
	Loginfailure int       `gorm:"column:loginfailure;default:0;NOT NULL" json:"loginfailure"` // 失败次数
	Logintime    time.Time `gorm:"column:logintime" json:"logintime"`                          // 登录时间
	Loginip      string    `gorm:"column:loginip" json:"loginip"`                              // 登录IP
	RtimeAndUtime
	Status modelType.EnumYN `gorm:"column:status;default:normal;NOT NULL" json:"status"` // 状态
}

func (m *Admin) TableName() string {
	return "admin"
}

func (m *Admin) AfterFind(tx *gorm.DB) error {

	m.Avatar = common.CdnLocal(m.Avatar)

	return nil
}

func (m Admin) AdminUser(c *gin.Context) (admin Admin) {
	global.DB.Where("id = ?", c.GetInt("admin_user_id")).First(&admin)
	return
}
